import axios from 'axios'

/**
 * 申请商家入驻
 * @param {Object} data 商家入驻信息
 */
export function applyMerchant(data) {
  return axios.post('/api/merchants/apply', data)
}

/**
 * 检查用户是否已经申请过商家
 * @param {Number} userId 用户ID
 */
export function checkMerchantExists(userId) {
  return axios.get(`/api/merchants/check/user/${userId}`)
}

/**
 * 根据ID获取商家信息
 * @param {Number} id 商家ID
 */
export function getMerchantById(id) {
  return axios.get(`/api/merchants/${id}`)
}

/**
 * 根据用户ID获取商家信息
 * @param {Number} userId 用户ID
 */
export function getMerchantByUserId(userId) {
  return axios.get(`/api/merchants/user/${userId}`)
}

/**
 * 更新商家信息
 * @param {Object} data 商家信息
 */
export function updateMerchant(data) {
  return axios.put(`/api/merchants/${data.id}`, data)
}

/**
 * 更新商家营业状态
 * @param {Number} id 商家ID
 * @param {Number} status 营业状态：0-休息中，1-营业中
 */
export function updateBusinessStatus(id, status) {
  return axios.put(`/api/merchants/${id}/business-status?businessStatus=${status}`)
}

/**
 * 获取商家列表
 * @param {Number} page 页码
 * @param {Number} size 每页数量
 * @param {String} shopName 店铺名称（可选）
 * @param {Number} status 审核状态（可选）
 * @param {Number} businessStatus 营业状态（可选）
 */
export function getMerchantList(page, size, shopName, status, businessStatus) {
  return axios.get('/api/merchants', {
    params: {
      page,
      size,
      shopName,
      status,
      businessStatus
    }
  })
}

/**
 * 获取营业中的商家列表
 * @param {Object} params 查询参数对象
 * @param {Number} params.page 页码
 * @param {Number} params.size 每页数量
 * @param {String} params.keyword 搜索关键词（可选）
 * @param {Number} params.category 分类ID（可选）
 * @param {String} params.orderBy 排序方式（可选）
 */
export function getOpenMerchants(params) {
  return axios.get('/api/merchants/open', {
    params
  })
}

/**
 * 获取商家统计数据
 * @param {number} id 商家ID
 * @param {string} startTime 开始时间（可选）
 * @param {string} endTime 结束时间（可选）
 * @returns {Promise} 请求Promise
 */
export function getMerchantStatistics(id, startTime, endTime) {
  return axios.get(`/api/merchants/${id}/statistics`, {
    params: { startTime, endTime }
  })
}

/**
 * 获取商家订单趋势数据
 * @param {number} id 商家ID
 * @param {string} startTime 开始时间（可选）
 * @param {string} endTime 结束时间（可选）
 * @param {string} timeUnit 时间单位（day, week, month）
 * @returns {Promise} 请求Promise
 */
export function getMerchantOrderTrend(id, startTime, endTime, timeUnit = 'day') {
  return axios.get(`/api/merchants/${id}/order-trend`, {
    params: { startTime, endTime, timeUnit }
  })
}

/**
 * 获取商家菜品销售占比数据
 * @param {number} id 商家ID
 * @param {string} startTime 开始时间（可选）
 * @param {string} endTime 结束时间（可选）
 * @param {number} limit 数量限制（可选）
 * @returns {Promise} 请求Promise
 */
export function getMerchantFoodSalesProportion(id, startTime, endTime, limit = 10) {
  return axios.get(`/api/merchants/${id}/food-sales-proportion`, {
    params: { startTime, endTime, limit }
  })
}

/**
 * 获取商家订单状态分布数据
 * @param {number} id 商家ID
 * @param {string} startTime 开始时间（可选）
 * @param {string} endTime 结束时间（可选）
 * @returns {Promise} 请求Promise
 */
export function getMerchantOrderStatusDistribution(id, startTime, endTime) {
  return axios.get(`/api/merchants/${id}/order-status-distribution`, {
    params: { startTime, endTime }
  })
}

/**
 * 获取商家客户统计数据
 * @param {number} id 商家ID
 * @param {string} startTime 开始时间（可选）
 * @param {string} endTime 结束时间（可选）
 * @returns {Promise} 请求Promise
 */
export function getMerchantCustomerStatistics(id, startTime, endTime) {
  return axios.get(`/api/merchants/${id}/customer-statistics`, {
    params: { startTime, endTime }
  })
}

/**
 * 获取商家热销商品排行
 * @param {number} id 商家ID
 * @param {string} startTime 开始时间（可选）
 * @param {string} endTime 结束时间（可选）
 * @param {number} limit 数量限制（可选）
 * @returns {Promise} 请求Promise
 */
export function getMerchantHotFoods(id, startTime, endTime, limit = 20) {
  return axios.get(`/api/merchants/${id}/hot-foods`, {
    params: { startTime, endTime, limit }
  })
}

/**
 * 根据审核状态获取商家列表
 * @param {Number} status 审核状态：0-待审核，1-已通过，2-已拒绝
 */
export function getMerchantsByStatus(status) {
  return axios.get(`/api/merchants/status/${status}`)
} 